﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using DataAccess;
using System.Linq.Expressions;
using QuanLyKhachSan.Validation;
using QuanLyKhachSan;

namespace BLL
{
    public class NhomTaiKhoanManager: IValidator<NhomTaiKhoan>,ILenhThucThi<NhomTaiKhoan>
    {
        public ValidateResult Validate(NhomTaiKhoan obj)
        {
            var vResult = new ValidateResult();
            if (string.IsNullOrEmpty(obj.MaNhom.Trim()))
            {
                vResult.Message.Add("Chưa nhập mã nhóm");
            }
            if (string.IsNullOrEmpty(obj.TenNhom.Trim()))
            {
                vResult.Message.Add("Chưa nhập tên nhóm");
            }
           
            return vResult;
        }

        public ActionResult Them(NhomTaiKhoan obj)
        {
            var actionResult = new ActionResult();
            using (var context = new QLKhachSanContext())
            {
                NhomTaiKhoan ntk = context.NhomTaiKhoans.FirstOrDefault(d => d.MaNhom.Equals(obj.MaNhom));
                if (ntk != null)
                {
                    actionResult.Exceptions.Add(new Exception("Nhóm tài khoản này đã tồn tại"));
                }
                else
                {
                    context.NhomTaiKhoans.Add(obj);
                    context.SaveChanges();
                }
            }
            return actionResult;
        }

        public ActionResult CapNhat(NhomTaiKhoan obj)
        {
            throw new NotImplementedException();
        }

        public ActionResultAsList<NhomTaiKhoan> LayDanhSach()
        {
            ActionResultAsList<NhomTaiKhoan> aResult = new ActionResultAsList<NhomTaiKhoan>();
            QLKhachSanContext context = new QLKhachSanContext();
            {
                try
                {
                    var list = context.NhomTaiKhoans.ToList();
                    aResult.Result = list.ToList<NhomTaiKhoan>();
                    if (aResult.Result.Count == 0)
                    {
                        aResult.Exceptions.Add(new Exception("Không tìm thấy nhóm tài khoản nào"));
                    }
                }
                catch (Exception ex)
                {
                    aResult.Exceptions.Add(ex);
                }
            }
            return aResult;
        }

        public ActionResult Xoa(NhomTaiKhoan ma)
        {
            throw new NotImplementedException();
        }

        public ActionResult Xoa(string ma)
        {
            throw new NotImplementedException();
        }
    }
}
